//
// Created by sjjmw on 3/24/2022.
//

//应该使用dfs

#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
#include "list"
#include "queue"
//数组A中共有n个元素，初始全为0。
// 你可以对数组进行两种操作：1、将数组中的一个元素加1；
// 2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。

//这个题不要在被骗了。就是反过来想，不是宽搜
struct Sol{
    std::vector<int> tar;
//    std::queue<State> queue;
    int n;
    bool reached(std::vector<int> cur){
        for (int i = 0; i < tar.size(); ++i) {
            if(tar[i]!=0){
                return false;
            }
        }
        return true;
    }

    void handle(
            int n1
            ){
        n=n1;
        tar.resize(n1);
        for (int i = 0; i < n1; ++i) {
            std::cin>>tar[i];
        }
        int step=0;
        while (1){
            for(auto &c:tar ){
                if(c%2==1){
                    c--;
                    step++;
                }
            }
            bool hasnotzero= false;
            for(auto &c:tar ){
                if(c!=0){
                    hasnotzero= true;
                }
            }
            if(!hasnotzero){
                break;
            }
            for(auto &c:tar ){
                c/=2;
            }

            step++;
        }
        printf("%d\n",step);
//        State s;s.nums.resize(n);
//        queue.push(s);
//        while (!queue.empty()){
//            auto &front=queue.front();
//            if(reached(front)){
//                printf("%d\n",front.depth);
//                return;
//            }
//            front.depth++;
//            for(int i=0;i< front.nums.size();i++){
//                State cpy=front;
//                cpy.nums[i]++;
//                queue.push(cpy);
//            }
//            for(int i=0;i< front.nums.size();i++){
//                front.nums[i]*=2;
//            }
//            queue.push(front);
//            end:
//            queue.pop();
//        }
    }
};
int main(){
    int a,b,c;
//    float a,b,c,d;
    int e;

    while(std::cin>>a){
        Sol().handle(a);

//        Sol().handle(a,b);
    }

    return 0;
}